package com.gkzf.ai.module.system.dal.dataobject.appUser;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.gkzf.ai.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;

import java.time.LocalDateTime;

/**
 * 用户 DO
 *
 * @author 国科智飞
 */
@TableName("app_users")
@KeySequence("app_users_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UsersDO extends BaseDO {

    /**
     * 用户主键ID
     */
    @TableId
    private Long id;
    /**
     * 用户名, 可选, 登录或显示用
     */
    private String username;
    /**
     * 用户昵称, 来自微信或用户自定义
     */
    private String nickname;
    /**
     * 用户头像URL, 来自微信或用户自定义
     */
    private String avatarUrl;
    /**
     * 性别, 0:未知, 1:男, 2:女
     */
    private Boolean gender;
    /**
     * 手机号码, App登录主要凭证
     */
    private String mobile;
    /**
     * 密码, 存储bcrypt加密后的哈希值
     */
    private String password;
    /**
     * 微信UnionID, 跨应用唯一标识
     */
    private String unionId;
    /**
     * 微信小程序OpenID
     */
    private String mpOpenId;
    /**
     * 微信App开放平台OpenID
     */
    private String appOpenId;
    /**
     * 用户状态, 0:正常, 1:禁用
     */
    private Boolean status;
    /**
     * 注册来源, 1:小程序, 2:iOS App, 3:Android App, 4:Web
     */
    private Boolean registerSource;
    /**
     * 最后登录时间
     */
    private LocalDateTime lastLoginTime;
    /**
     * 最后登录IP
     */
    private String lastLoginIp;
    /**
     * 租户ID
     */
    private Long tenantId;

}